﻿using System;
using System.Windows.Forms;
using ProyectoSelva.Daos;
using ProyectoSelva.Dtos;
using EntitiesAndMappings.Entities;
using ProyectoSelva.Validate;

namespace ProyectoSelva.Forms.Operaciones
{
    public partial class FrmBusquedaRenovacionContrato : Form , IValidateForm
    {
        private Boolean _valido;

        public static FrmBusquedaRenovacionContrato Activo { set; get; }

        public Boolean CerroSinAccion { get; set; }

        public FrmBusquedaRenovacionContrato()
        {
            InitializeComponent();
            CerroSinAccion = false;
            if (Activo == null)
            {
                Activo = this;
            }
            _valido = true;
            Closed += EnCierre;
            dGridResultado.AutoGenerateColumns = false;
        }

        private void EnCierre(object sender, EventArgs e)
        {
            Activo = null;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            errorProvider.Clear();
            if (datFechaInicio.Value.Date>datFechaFin.Value.Date)
            {
                errorProvider.SetError(datFechaInicio, @"La fecha de inicio debe ser menor que la fecha de fin");
            }
            else
            {
                ActionExecutor.Execute(this, delegate
                {
                    var contratoDao = new ContratoDAO();
                    var listado = contratoDao.BuscarPorRangoFechaFin(datFechaInicio.Value.Date, datFechaFin.Value.Date);
                    dGridResultado.DataSource = ContratoDTO.AListaDTO(listado);
                });
            }
        }

        private void tStripButtonModificar_Click(object sender, EventArgs e)
        {
            
            if (dGridResultado.CurrentRow!= null)
            {
                var contratoDao = new ContratoDAO();
                var contratoDto = (ContratoDTO) dGridResultado.CurrentRow.DataBoundItem;
                var form = new FrmRenovacionContrato(contratoDao.Refresh(contratoDto.Contrato));
                form.ShowDialog(this);
                if (!form.CerroSinAccion)
                {
                    btnBuscar_Click(sender, e);
                }
            }
            else
            {
                MessageBox.Show(@"Debe seleccionar un elemento");
            }
        }
        
        public void Invalid()
        {
            _valido = false;
        }

        public bool IsValid()
        {
            return _valido;
        }
    }
}
